home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Aminet 31
/
Aminet 31 (1999)(Schatztruhe)[!][Jun 1999].iso
/
Aminet
/
mus
/
midi
/
XGToolset5_src.lha
/
XGToolset_src
/
XGReverb
/
XGReverb.c
< prev
next >
Wrap
C/C++ Source or Header
|
1999-02-18
|
76KB
|
2,034 lines
/*
XG-Reverb-Editor V1.4
A Bars and Pipes tool for editing the RVXG-XG-board from YAMAHA.
Especially the reverb-effects with all parameters.
Use it together with the RVXGXG.ptool form us.
© 1998 Alfred & Matthias Faust
The Tool-code based farly on the code for the "pc3.ptool" from Richard
Hagen. That's a very good tool, many thanks to him.
Richard has written his tool with DICE. We altered the code to compile
with the free GNU-C-compiler of the ADE. Especially the part was
transcripted, that place the imagedate in chip-RAM, because the
GNU-C-compiler hasn't as yet a keyword like DICE or other compiler for
this.
This code is released into the Public Domain, and may be freely
distributed in its original form.
It is supplied ``as is'', and comes with no warranty. This program code
was released because it might be useful as a starting point for other
programmers. However, if any damage arises from its use, the original
author and we will not be held liable.
You are free to use and modify this code to your heart's content, provided
you acknowledge me as the original author in any code that you might
distribute which is based largely on this code.
I acknowledge that the design of this tool is influenced strongly by the
example code supplied with the Rules for Tools package. However, I have
made substantial contributions of my own.
Matthias & Alfred Faust
j.k.dax@t-online.de
History:
1.0 - 1.2
overjumping, because all tools shall have the same version number
1.3 (13.11.1998)
Initial Release.
1.4 (18.2.1999)
all slidervalues will be "remembered" if tool is placed in the
pipeline and stored with the song, reloaded and worked away.
*/
#include "bars.h"
#include "myheader.h" // from R.Hagen
#include <libraries/dos.h>
#include <proto/exec.h>
#include <proto/intuition.h>
#include <proto/graphics.h>
#include <exec/memory.h>
#include <exec/execbase.h>
#include <exec/types.h>
#include <string.h>
#include <intuition/intuition.h>
char version[]="\0$VER:XG-Reverb-Edit 1.4 (18.2.1999) © Alfred & Matthias Faust";
#define RVXG_NAME "XG-Reverb-Edit"
#define RVXG_ID 0x52565847
#define RVXG_TYPE (TOOL_NORMAL | TOOL_NOTPAD)
// Hall-Effects 300 ->
#define hall1 0
#define hall2 1
#define room1 2
#define room2 3
#define room3 4
#define stage1 5
#define stage2 6
#define plate 7
#define whiteroom 8
#define tunnel 9
#define basement 10
extern struct ExecBase * SysBase;
/* the litte Icon in the pipeline */
UWORD *RVXG=NULL;
static UWORD RVXGdata[] =
{
/* Plane 0 */
0x7FFF,0xFE00,
0x7FFF,0xFE00,
0x7FBF,0xFE00,
0x7EDF,0xFE00,
0x7CEF,0xBE00,
0x70EF,0xBE00,
0x70EF,0xBE00,
0x7CDF,0xFE00,
0x7EBF,0xFE00,
0x7FFF,0xFE00,
0x7FFF,0xFE00,
0x7FFF,0xFE00,
/* Plane 1 */
0x0000,0x0200,
0x0000,0x0600,
0x1FFF,0xFE00,
0x1FFF,0xFE00,
0x9FFF,0xBF00,
0x93FF,0xBF00,
0x93FF,0xBF00,
0x9FFF,0xFF00,
0x1FFF,0xFE00,
0x1FFF,0xFE00,
0x1FFF,0xFE00,
0x3FFF,0xFE00,
/* Plane 2 */
0x0000,0x0000,
0x0000,0x0000,
0x1FBF,0xF800,
0x1FDB,0xF800,
0x1FED,0xF800,
0x1FED,0xF800,
0x1FED,0xF800,
0x1FDB,0xF800,
0x1FBF,0xF800,
0x1FFF,0xF800,
0x0000,0x0000,
0x0000,0x0000
};
static struct Image RVXG_image = {
0, 0,
24 , 12 , 3 ,
NULL,
0x1f, 0x00,
NULL
};
//Definitions of the gadgets
#define RVTYPE_GADGET 1
#define RVTYPEDOWN_GADGET 2
#define RVTYPEUP_GADGET 3
#define RVTIME_GADGET 4
#define RVTIMEDOWN_GADGET 5
#define RVTIMEUP_GADGET 6
#define RVDIFFSN_GADGET 7
#define RVDIFFSNDOWN_GADGET 8
#define RVDIFFSNUP_GADGET 9
#define RVINITDELAY_GADGET 10
#define RVINITDELAYDOWN_GADGET 11
#define RVINITDELAYUP_GADGET 12
#define RVHPFCUTOFF_GADGET 13
#define RVHPFCUTOFFDOWN_GADGET 14
#define RVHPFCUTOFFUP_GADGET 15
#define RVLPFCUTOFF_GADGET 16
#define RVLPFCUTOFFDOWN_GADGET 17
#define RVLPFCUTOFFUP_GADGET 18
#define RVWIDTH_GADGET 19
#define RVWIDTHDOWN_GADGET 20
#define RVWIDTHUP_GADGET 21
#define RVHEIGHT_GADGET 22
#define RVHEIGHTDOWN_GADGET 23
#define RVHEIGHTUP_GADGET 24
#define RVDEPTH_GADGET 25
#define RVDEPTHDOWN_GADGET 26
#define RVDEPTHUP_GADGET 27
#define RVWALLVARY_GADGET 28
#define RVWALLVARYDOWN_GADGET 29
#define RVWALLVARYUP_GADGET 30
#define RVDRYWET_GADGET 31
#define RVDRYWETDOWN_GADGET 32
#define RVDRYWETUP_GADGET 33
#define RVRETURN_GADGET 34
#define RVRETURNDOWN_GADGET 35
#define RVRETURNUP_GADGET 36
#define RVPAN_GADGET 37
#define RVPANDOWN_GADGET 38
#define RVPANUP_GADGET 39
#define RVDELAY_GADGET 40
#define RVDELAYDOWN_GADGET 41
#define RVDELAYUP_GADGET 42
#define RVDENSITY_GADGET 43
#define RVDENSITYDOWN_GADGET 44
#define RVDENSITYUP_GADGET 45
#define RVERREVBAL_GADGET 46
#define RVERREVBALDOWN_GADGET 47
#define RVERREVBALUP_GADGET 48
#define RVFEEDBACK_GADGET 49
#define RVFEEDBACKDOWN_GADGET 50
#define RVFEEDBACKUP_GADGET 51
#define WRITE_GADGET 52
//all the gadgets
/* Reverb-Type-Gadget */
struct PropInfo RVXGGadget1SInfo = {
AUTOKNOB+FREEHORIZ, -16384, -1, 16384, -1,
};
struct Image RVXGImage1 = {
0, 0, 102, 6, 0, NULL, 0x0000, 0x0000, NULL
};
struct IntuiText RVXGIText1 = {
2, 0, JAM1, -78, 1, NULL, " Type", NULL
};
struct Gadget RVXGGadget1 = {
NULL, 85, 31, 150, 9, GFLG_GADGHBOX|GFLG_GADGHIMAGE, RELVERIFY|GADGIMMEDIATE, PROPGADGET,
(APTR)&RVXGImage1, NULL, &RVXGIText1, NULL, (APTR)&RVXGGadget1SInfo, RVTYPE_GADGET, NULL
};
/* Reverb-Time-Gadget */
struct PropInfo RVXGGadget2SInfo = {
AUTOKNOB+FREEHORIZ, -16384, -1, 16384, -1,
};
struct Image RVXGImage2 = {
0, 0, 102, 6, 0, NULL, 0x0000, 0x0000, NULL
};
struct Gadget RVXGGadget2 = {
&RVXGGadget1, 85, 42, 150, 9, GFLG_GADGHBOX|GFLG_GADGHIMAGE, RELVERIFY|GADGIMMEDIATE, PROPGADGET,
(APTR)&RVXGImage2, NULL, NULL, NULL, (APTR)&RVXGGadget2SInfo, RVTIME_GADGET, NULL
};
/* Reverb-Diffusion-Gadget */
struct PropInfo RVXGGadget3SInfo = {
AUTOKNOB+FREEHORIZ, -16384, -1, 16384, -1,
};
struct Image RVXGImage3 = {
0, 0, 102, 6, 0, NULL, 0x0000, 0x0000, NULL
};
struct IntuiText RVXGIText3 = {
2, 0, JAM1, -78, 1, NULL, "Diffusion", NULL
};
struct Gadget RVXGGadget3 = {
&RVXGGadget2, 85, 53, 150, 9, GFLG_GADGHBOX|GFLG_GADGHIMAGE, RELVERIFY|GADGIMMEDIATE, PROPGADGET,
(APTR)&RVXGImage3, NULL, &RVXGIText3, NULL, (APTR)&RVXGGadget3SInfo, RVDIFFSN_GADGET, NULL
};
//Reverb-Initial-Delay-Gadget
struct PropInfo RVXGGadget4SInfo = {
AUTOKNOB+FREEHORIZ, -16384, -1, 16384, -1,
};
struct Image RVXGImage4 = {
0, 0, 102, 6, 0, NULL, 0x0000, 0x0000, NULL
};
struct IntuiText RVXGIText4 = {
2, 0, JAM1, -78, 1, NULL, "InitDelay", NULL
};
struct Gadget RVXGGadget4 = {
&RVXGGadget3, 85, 64, 150, 9, GFLG_GADGHBOX|GFLG_GADGHIMAGE, RELVERIFY|GADGIMMEDIATE, PROPGADGET,
(APTR)&RVXGImage4, NULL, &RVXGIText4, NULL, (APTR)&RVXGGadget4SInfo, RVINITDELAY_GADGET, NULL
}; // RVINITDELAY_GADGET
//Reverb-HpfCutoff-Gadget
struct PropInfo RVXGGadget5SInfo = {
AUTOKNOB+FREEHORIZ, -16384, -1, 16384, -1,
};
struct Image RVXGImage5 = {
0, 0, 102, 6, 0, NULL, 0x0000, 0x0000, NULL
};
struct IntuiText RVXGIText5 = {
2, 0, JAM1, -78, 1, NULL, "HpfCutoff", NULL
};
struct Gadget RVXGGadget5 = {
&RVXGGadget4, 85, 75, 150, 9, GFLG_GADGHBOX|GFLG_GADGHIMAGE, RELVERIFY|GADGIMMEDIATE, PROPGADGET,
(APTR)&RVXGImage5, NULL, &RVXGIText5, NULL, (APTR)&RVXGGadget5SInfo, RVHPFCUTOFF_GADGET, NULL
}; //RVHPFCUTOFF_GADGET
//Reverb-LpfCutoff-Gadget
struct PropInfo RVXGGadget6SInfo = {
AUTOKNOB+FREEHORIZ, -16384, -1, 16384, -1,
};
struct Image RVXGImage6 = {
0, 0, 102, 6, 0, NULL, 0x0000, 0x0000, NULL
};
struct IntuiText RVXGIText6 = {
2, 0, JAM1, -78, 1, NULL, "LpfCutoff", NULL
};
struct Gadget RVXGGadget6 = {
&RVXGGadget5, 85, 86, 150, 9, GFLG_GADGHBOX|GFLG_GADGHIMAGE, RELVERIFY|GADGIMMEDIATE, PROPGADGET,
(APTR)&RVXGImage6, NULL, &RVXGIText6, NULL, (APTR)&RVXGGadget6SInfo, RVLPFCUTOFF_GADGET, NULL
}; //RVLPFCUTOFF_GADGET
//Reverb-Width-Gadget
struct PropInfo RVXGGadget7SInfo = {
AUTOKNOB+FREEHORIZ, -16384, -1, 16384, -1,
};
struct Image RVXGImage7 = {
0, 0, 102, 6, 0, NULL, 0x0000, 0x0000, NULL
};
struct Gadget RVXGGadget7 = {
&RVXGGadget6, 85, 97, 150, 9, GFLG_GADGHBOX|GFLG_GADGHIMAGE, RELVERIFY|GADGIMMEDIATE, PROPGADGET,
(APTR)&RVXGImage7, NULL, NULL, NULL, (APTR)&RVXGGadget7SInfo, RVWIDTH_GADGET, NULL
}; //RVWIDTH_GADGET
//Reverb-Height-Gadget
struct PropInfo RVXGGadget8SInfo = {
AUTOKNOB+FREEHORIZ, -16384, -1, 16384, -1,
};
struct Image RVXGImage8 = {
0, 0, 102, 6, 0, NULL, 0x0000, 0x0000, NULL
};
struct Gadget RVXGGadget8 = {
&RVXGGadget7, 85, 108, 150, 9, GFLG_GADGHBOX|GFLG_GADGHIMAGE, RELVERIFY|GADGIMMEDIATE, PROPGADGET,
(APTR)&RVXGImage8, NULL, NULL, NULL, (APTR)&RVXGGadget8SInfo, RVHEIGHT_GADGET, NULL
}; //RVHEIGHT_GADGET
//Reverb-Depth-Gadget
struct PropInfo RVXGGadget9SInfo = {
AUTOKNOB+FREEHORIZ, -16384, -1, 16384, -1,
};
struct Image RVXGImage9 = {
0, 0, 102, 6, 0, NULL, 0x0000, 0x0000, NULL
};
struct Gadget RVXGGadget9 = {
&RVXGGadget8, 85, 119, 150, 9, GFLG_GADGHBOX|GFLG_GADGHIMAGE, RELVERIFY|GADGIMMEDIATE, PROPGADGET,
(APTR)&RVXGImage9, NULL, NULL, NULL, (APTR)&RVXGGadget9SInfo, RVDEPTH_GADGET, NULL
}; //RVDEPTH_GADGET
//Reverb-WallVary-Gadget
struct PropInfo RVXGGadget10SInfo = {
AUTOKNOB+FREEHORIZ, -16384, -1, 16384, -1,
};
struct Image RVXGImage10 = {
0, 0, 102, 6, 0, NULL, 0x0000, 0x0000, NULL
};
struct Gadget RVXGGadget10 = {
&RVXGGadget9, 85, 130, 150, 9, GFLG_GADGHBOX|GFLG_GADGHIMAGE, RELVERIFY|GADGIMMEDIATE, PROPGADGET,
(APTR)&RVXGImage10, NULL, NULL, NULL, (APTR)&RVXGGadget10SInfo, RVWALLVARY_GADGET, NULL
}; //RVWALLVARY_GADGET
//Reverb-Dry/Wet-Gadget
struct PropInfo RVXGGadget11SInfo = {
AUTOKNOB+FREEHORIZ, -16384, -1, 16384, -1,
};
struct Image RVXGImage11 = {
0, 0, 102, 6, 0, NULL, 0x0000, 0x0000, NULL
};
struct IntuiText RVXGIText11 = {
2, 0, JAM1, -78, 1, NULL, "Dry<->Wet", NULL
};
struct Gadget RVXGGadget11 = {
&RVXGGadget10, 85, 141, 150, 9, GFLG_GADGHBOX|GFLG_GADGHIMAGE, RELVERIFY|GADGIMMEDIATE, PROPGADGET,
(APTR)&RVXGImage11, NULL, &RVXGIText11, NULL, (APTR)&RVXGGadget11SInfo, RVDRYWET_GADGET, NULL
}; //RVDRYWET_GADGET
//Reverb-Return-Gadget
struct PropInfo RVXGGadget12SInfo = {
AUTOKNOB+FREEHORIZ, -16384, -1, 16384, -1,
};
struct Image RVXGImage12 = {
0, 0, 102, 6, 0, NULL, 0x0000, 0x0000, NULL
};
struct Gadget RVXGGadget12 = {
&RVXGGadget11, 85, 152, 150, 9, GFLG_GADGHBOX|GFLG_GADGHIMAGE, RELVERIFY|GADGIMMEDIATE, PROPGADGET,
(APTR)&RVXGImage12, NULL, NULL, NULL, (APTR)&RVXGGadget12SInfo, RVRETURN_GADGET, NULL
}; //RVRETURN_GADGET
//Reverb-Pan-Gadget
struct PropInfo RVXGGadget13SInfo = {
AUTOKNOB+FREEHORIZ, -16384, -1, 16384, -1,
};
struct Image RVXGImage13 = {
0, 0, 102, 6, 0, NULL, 0x0000, 0x0000, NULL
};
struct Gadget RVXGGadget13 = {
&RVXGGadget12, 85, 163, 150, 9, GFLG_GADGHBOX|GFLG_GADGHIMAGE, RELVERIFY|GADGIMMEDIATE, PROPGADGET,
(APTR)&RVXGImage13, NULL, NULL, NULL, (APTR)&RVXGGadget13SInfo, RVPAN_GADGET, NULL
}; //RVPAN_GADGET
//Reverb-Delay-Gadget
struct PropInfo RVXGGadget14SInfo = {
AUTOKNOB+FREEHORIZ, -16384, -1, 16384, -1,
};
struct Image RVXGImage14 = {
0, 0, 102, 6, 0, NULL, 0x0000, 0x0000, NULL
};
struct IntuiText RVXGIText14 = {
2, 0, JAM1, -78, 1, NULL, " RvDelay", NULL
};
struct Gadget RVXGGadget14 = {
&RVXGGadget13, 85, 174, 150, 9, GFLG_GADGHBOX|GFLG_GADGHIMAGE, RELVERIFY|GADGIMMEDIATE, PROPGADGET,
(APTR)&RVXGImage14, NULL, &RVXGIText14, NULL, (APTR)&RVXGGadget14SInfo, RVDELAY_GADGET, NULL
}; //RVDELAY_GADGET
//Reverb-Density-Gadget
struct PropInfo RVXGGadget15SInfo = {
AUTOKNOB+FREEHORIZ, -16384, -1, 16384, -1,
};
struct Image RVXGImage15 = {
0, 0, 102, 6, 0, NULL, 0x0000, 0x0000, NULL
};
struct IntuiText RVXGIText15 = {
2, 0, JAM1, -78, 1, NULL, " Density", NULL
};
struct Gadget RVXGGadget15 = {
&RVXGGadget14, 85, 185, 150, 9, GFLG_GADGHBOX|GFLG_GADGHIMAGE, RELVERIFY|GADGIMMEDIATE, PROPGADGET,
(APTR)&RVXGImage15, NULL, &RVXGIText15, NULL, (APTR)&RVXGGadget15SInfo, RVDENSITY_GADGET, NULL
}; //RVDENSITY_GADGET
//Reverb-Er/RevBal-Gadget
struct PropInfo RVXGGadget16SInfo = {
AUTOKNOB+FREEHORIZ, -16384, -1, 16384, -1,
};
struct Image RVXGImage16 = {
0, 0, 102, 6, 0, NULL, 0x0000, 0x0000, NULL
};
struct IntuiText RVXGIText16 = {
2, 0, JAM1, -78, 1, NULL, "Er/RevBal", NULL
};
struct Gadget RVXGGadget16 = {
&RVXGGadget15, 85, 196, 150, 9, GFLG_GADGHBOX|GFLG_GADGHIMAGE, RELVERIFY|GADGIMMEDIATE, PROPGADGET,
(APTR)&RVXGImage16, NULL, &RVXGIText16, NULL, (APTR)&RVXGGadget16SInfo, RVERREVBAL_GADGET, NULL
}; //RVERREVBAL_GADGET
//Reverb-Feedback-Gadget
struct PropInfo RVXGGadget17SInfo = {
AUTOKNOB+FREEHORIZ, -16384, -1, 16384, -1,
};
struct Image RVXGImage17 = {
0, 0, 102, 6, 0, NULL, 0x0000, 0x0000, NULL
};
struct IntuiText RVXGIText17 = {
2, 0, JAM1, -78, 1, NULL, " Feedback", NULL
};
struct Gadget RVXGGadget17 = {
&RVXGGadget16, 85, 207, 150, 9, GFLG_GADGHBOX|GFLG_GADGHIMAGE, RELVERIFY|GADGIMMEDIATE, PROPGADGET,
(APTR)&RVXGImage17, NULL, &RVXGIText17, NULL, (APTR)&RVXGGadget17SInfo, RVFEEDBACK_GADGET, NULL
}; //RVFEEDBACK_GADGET
/* Write gadget. */
struct IntuiText RVXGIText18 = {
4,0,JAM1,4,2,NULL,"Write",NULL
};
struct Gadget RVXGGadget18 = {
&RVXGGadget17,110,230,50,11,GFLG_GADGHBOX|GFLG_GADGHIMAGE,RELVERIFY|GADGIMMEDIATE,BOOLGADGET,
(APTR)NULL,NULL,&RVXGIText18,NULL,NULL,WRITE_GADGET,NULL
};
//the mainwindowstructure
struct NewWindow RVXGNewWindowStructure1 = {
5, 167,
275, 255,
0, 6,
GADGETDOWN|GADGETUP|CLOSEWINDOW,
WINDOWDRAG|WINDOWDEPTH|WINDOWCLOSE|ACTIVATE|NOCAREREFRESH,
&RVXGGadget18,
NULL,
"XGReverb-Editor",
NULL,
NULL,
5, 5,
-1, -1,
CUSTOMSCREEN
};
struct RVXGTool {
struct Tool tool;
UBYTE revtype;
UBYTE revtime;
UBYTE revdiffusion;
UBYTE revinitdelay;
UBYTE revhpfcutoff;
UBYTE revlpfcutoff;
UBYTE revwidth;
UBYTE revheight;
UBYTE revdepth;
UBYTE revwallvary;
UBYTE revdrywet;
UBYTE revreturn;
UBYTE revpan;
UBYTE revdelay;
UBYTE revdensity;
UBYTE reverrevbal;
UBYTE revfeedback;
char storage1[32];
char storage2[32];
char storage3[32];
char storage4[32];
char storage5[32];
char storage6[32];
char storage7[32];
char storage8[32];
char storage9[32];
char storage10[32];
char storage11[32];
char storage12[32];
char storage13[32];
char storage14[32];
char storage15[32];
char storage16[32];
char storage17[32];
char *revtypesysex;
char *revtimesysex;
char *revdiffusionsysex;
char *revinitdelaysysex;
char *revhpfcutoffsysex;
char *revlpfcutoffsysex;
char *revwidthsysex;
char *revheightsysex;
char *revdepthsysex;
char *revwallvarysysex;
char *revdrywetsysex;
char *revreturnsysex;
char *revpansysex;
char *revdelaysysex;
char *revdensitysysex;
char *reverrevbalsysex;
char *revfeedbacksysex;
};
static struct ToolMaster master;
extern struct Functions *functions;
//initial values
static void RVXG_tool_init(struct RVXGTool *tool)
{
tool->revtype = 0x00;
tool->revtime = 0x12;
tool->revdiffusion = 0x0a;
tool->revinitdelay = 0x08;
tool->revhpfcutoff = 0x0d;
tool->revlpfcutoff = 0x0f;
tool->revwidth = 0x00;
tool->revheight = 0x00;
tool->revdepth = 0x00;
tool->revwallvary = 0x00;
tool->revdrywet = 0x28;
tool->revreturn = 0x40;
tool->revpan = 0x40;
tool->revdelay = 0x00;
tool->revdensity = 0x04;
tool->reverrevbal = 0x32;
tool->revfeedback = 0x40;
tool->revtypesysex = NULL;
tool->revtimesysex = NULL;
tool->revdiffusionsysex = NULL;
tool->revinitdelaysysex = NULL;
tool->revhpfcutoffsysex = NULL;
tool->revlpfcutoffsysex = NULL;
tool->revwidthsysex = NULL;
tool->revheightsysex = NULL;
tool->revdepthsysex = NULL;
tool->revwallvarysysex = NULL;
tool->revdrywetsysex = NULL;
tool->revreturnsysex = NULL;
tool->revpansysex = NULL;
tool->revdelaysysex = NULL;
tool->revdensitysysex = NULL;
tool->reverrevbalsysex = NULL;
tool->revfeedbacksysex = NULL;
tool->tool.touched = TOUCH_INIT;
}
static struct Event * __saveds processeventcode(struct Event *event)
{
event->tool = event->tool->next;
return(event);
}
//the necessary functions for writing to track
static BOOL lock_clip(struct Clip *clip)
{
Forbid();
if (clip->locked == 0)
{
clip->locked = 1;
Permit();
return TRUE;
}
else
{
Permit();
return FALSE;
}
}
static void unlock_clip(struct Clip *clip)
{
clip->locked = 0;
}
//writes sysex into track
static void __saveds insertsysex(char *buff, short size, struct RVXGTool *tool, const LONG time)
{
struct StringEvent *event;
struct String *string;
event = (struct StringEvent *) (*functions->allocevent)();
if (event)
{
string = (struct String *) (*functions->myalloc)(size + 3, MEMF_CLEAR);
if (string)
{
event->next = NULL;
event->string = string;
memcpy(string->string, buff, size);
string->length = size + 2;
event->type = EVENT_SYSX;
event->status = MIDI_SYSX;
event->time = time;
event->tool = tool->tool.next;
if (lock_clip(&(tool->tool.track->clip)))
{
event->next = (struct StringEvent *)tool->tool.track->clip.events.first;
tool->tool.track->clip.events.first = (struct Event *)(*functions->sorteventlist)(event);
unlock_clip(&(tool->tool.track->clip));
}
else
{
(*functions->freelist)(event);
}
}
}
}
// the routine for sending SysEx-data thru the pipeline
static void __saveds sendsysex(char *buff, short size, struct RVXGTool *tool, const LONG time)
{
struct StringEvent *event;
struct String *string;
event = (struct StringEvent *) (*functions->allocevent)();
if (event)
{
string = (struct String *) (*functions->myalloc)(size + 3, MEMF_CLEAR);
if (string)
{
event->string = string;
memcpy(string->string, buff, size);
string->length = size + 2;
event->type = EVENT_SYSX;
event->status = MIDI_SYSX;
event->time = time;
event->tool = tool->tool.next;
WaitTOF();
(*functions->qevent)(event);
(*functions->myfree)(string);
}
}
}
static void __saveds trans_hx(struct RVXGTool *tool, const LONG time, char *sysx, int sw)
{
LONG size;
int a, b, x, y ;
UBYTE abuf[32];
char chr[4];
char *zbuf = NULL;
//translate sysexbuffer into hex
size = strlen(sysx);
zbuf = (char *)AllocVec(size+2, MEMF_ANY|MEMF_CLEAR);
if(zbuf)
{
CopyMem(sysx, zbuf, size);
b=0;
for(a=0;a < size;a=a+2)
{
chr[0] = zbuf[a];
chr[1] = zbuf[a+1];
x=(isdigit((int)chr[0]))? (chr[0]&0xF) : ((chr[0]&0xDF)-55); //this is the
y=(isdigit((int)chr[1]))? (chr[1]&0xF) : ((chr[1]&0xDF)-55); //the translate-core
abuf[b++] = ((x<<4)|y); //writing with bitmanipulation
}
//send hexdata
FreeVec(zbuf);
if (sw == 0) sendsysex(abuf, b, tool, time);
if (sw == 1) insertsysex(abuf, b, tool, time);
}
}
// Writes all values of the sliders and more in the main window
LONG __saveds display_routine(struct Window *window, struct Gadget *gadget, ULONG value)
{
char text[10];
char *revtimet, *revtypet, *revwidtht, *revheightt, *revdeptht, *revwallvaryt,
*revreturnt, *revpant;
char revtimetext[8];
char revtypetext[10];
char revwidthtext[10];
char revheighttext[10];
char revdepthtext[10];
char revwallvarytext[16];
char revreturntext[10];
char revpantext[8];
const short id = gadget->GadgetID;
struct RastPort *rp = window->RPort;
char name[15];
int i=0;
char revtypename[11][7]={
"Hall 1 ","Hall 2 ","Room 1 ","Room 2 ","Room 3 ","Stage 1","Stage 2","Plate ","Wh.Room",
"Tunnel ","Basemnt"};
switch (id)
{
case RVTYPE_GADGET:
revtypet = revtypename[value];
sprintf(revtypetext, "%7.7s", revtypet);
SetAPen(rp, 7);
SetBPen(rp, 6);
SetDrMd(rp, INVERSVID|JAM2);
Move(rp, 83, 26);
Text(rp, revtypetext, 7);
SetAPen(rp, 2);
SetBPen(rp, 0);
SetDrMd(rp, JAM2);
if (value == hall1)
{
revtimet="Time";
sprintf(revtimetext, "%5.5s", revtimet);
Move(rp, 39, 49);
Text(rp, revtimetext, 5);
revwidtht = " ";
sprintf(revwidthtext, "%6.6s", revwidtht);
Move(rp, 30, 104);
Text(rp, revwidthtext, 6);
revheightt = " ";
sprintf(revheighttext, "%7.7s", revheightt);
Move(rp, 21, 115);
Text(rp, revheighttext, 7);
revdeptht = " ";
sprintf(revdepthtext, "%7.7s", revdeptht);
Move(rp, 25, 126);
Text(rp, revdepthtext, 7);
revwallvaryt = " ";
sprintf(revwallvarytext, "%9.9s", revwallvaryt);
Move(rp, 5, 137);
Text(rp, revwallvarytext, 9);
revreturnt="RvReturn";
sprintf(revreturntext, "%9.9s", revreturnt);
Move(rp, 7, 159);
Text(rp, revreturntext, 9);
revpant="RvPan";
sprintf(revpantext, "%5.5s", revpant);
Move(rp, 39, 170);
Text(rp, revpantext, 5);
SetAPen(rp, 1);
}
else if (value == hall2)
{
revtimet="Time";
sprintf(revtimetext, "%5.5s", revtimet);
Move(rp, 39, 49);
Text(rp, revtimetext, 5);
revwidtht = " ";
sprintf(revwidthtext, "%6.6s", revwidtht);
Move(rp, 30, 104);
Text(rp, revwidthtext, 6);
revheightt = " ";
sprintf(revheighttext, "%7.7s", revheightt);
Move(rp, 21, 115);
Text(rp, revheighttext, 7);
revdeptht = " ";
sprintf(revdepthtext, "%7.7s", revdeptht);
Move(rp, 25, 126);
Text(rp, revdepthtext, 7);
revwallvaryt = " ";
sprintf(revwallvarytext, "%9.9s", revwallvaryt);
Move(rp, 5, 137);
Text(rp, revwallvarytext, 9);
revreturnt = " ";
sprintf(revreturntext, "%9.9s", revreturnt);
Move(rp, 7, 159);
Text(rp, revreturntext, 9);
revpant=" ";
sprintf(revpantext, "%6.6s", revpant);
Move(rp, 35, 170);
Text(rp, revpantext, 6);
SetAPen(rp, 1);
}
else if (value == room1)
{
revtimet="Time";
sprintf(revtimetext, "%5.5s", revtimet);
Move(rp, 39, 49);
Text(rp, revtimetext, 5);
revwidtht = " ";
sprintf(revwidthtext, "%6.6s", revwidtht);
Move(rp, 30, 104);
Text(rp, revwidthtext, 6);
revheightt = " ";
sprintf(revheighttext, "%7.7s", revheightt);
Move(rp, 21, 115);
Text(rp, revheighttext, 7);
revdeptht = " ";
sprintf(revdepthtext, "%7.7s", revdeptht);
Move(rp, 25, 126);
Text(rp, revdepthtext, 7);
revwallvaryt = " ";
sprintf(revwallvarytext, "%9.9s", revwallvaryt);
Move(rp, 5, 137);
Text(rp, revwallvarytext, 9);
revreturnt = " ";
sprintf(revreturntext, "%9.9s", revreturnt);
Move(rp, 7, 159);
Text(rp, revreturntext, 9);
revpant=" ";
sprintf(revpantext, "%6.6s", revpant);
Move(rp, 35, 170);
Text(rp, revpantext, 6);
SetAPen(rp, 1);
}
else if (value == room2)
{
revtimet="Time";
sprintf(revtimetext, "%5.5s", revtimet);
Move(rp, 39, 49);
Text(rp, revtimetext, 5);
revwidtht = " ";
sprintf(revwidthtext, "%6.6s", revwidtht);
Move(rp, 30, 104);
Text(rp, revwidthtext, 6);
revheightt = " ";
sprintf(revheighttext, "%7.7s", revheightt);
Move(rp, 21, 115);
Text(rp, revheighttext, 7);
revdeptht = " ";
sprintf(revdepthtext, "%7.7s", revdeptht);
Move(rp, 25, 126);
Text(rp, revdepthtext, 7);
revwallvaryt = " ";
sprintf(revwallvarytext, "%9.9s", revwallvaryt);
Move(rp, 5, 137);
Text(rp, revwallvarytext, 9);
revreturnt = " ";
sprintf(revreturntext, "%9.9s", revreturnt);
Move(rp, 7, 159);
Text(rp, revreturntext, 9);
revpant=" ";
sprintf(revpantext, "%6.6s", revpant);
Move(rp, 35, 170);
Text(rp, revpantext, 6);
SetAPen(rp, 1);
}
else if (value == room3)
{
revtimet="Time";
sprintf(revtimetext, "%5.5s", revtimet);
Move(rp, 39, 49);
Text(rp, revtimetext, 5);
revwidtht = " ";
sprintf(revwidthtext, "%6.6s", revwidtht);
Move(rp, 30, 104);
Text(rp, revwidthtext, 6);
revheightt = " ";
sprintf(revheighttext, "%7.7s", revheightt);
Move(rp, 21, 115);
Text(rp, revheighttext, 7);
revdeptht = " ";
sprintf(revdepthtext, "%7.7s", revdeptht);
Move(rp, 25, 126);
Text(rp, revdepthtext, 7);
revwallvaryt = " ";
sprintf(revwallvarytext, "%9.9s", revwallvaryt);
Move(rp, 5, 137);
Text(rp, revwallvarytext, 9);
revreturnt = " ";
sprintf(revreturntext, "%9.9s", revreturnt);
Move(rp, 7, 159);
Text(rp, revreturntext, 9);
revpant=" ";
sprintf(revpantext, "%6.6s", revpant);
Move(rp, 35, 170);
Text(rp, revpantext, 6);
SetAPen(rp, 1);
}
else if (value == stage1)
{
revtimet = " ";
sprintf(revtimetext, "%5.5s", revtimet);
Move(rp, 39, 49);
Text(rp, revtimetext, 5);
revwidtht = " ";
sprintf(revwidthtext, "%6.6s", revwidtht);
Move(rp, 30, 104);
Text(rp, revwidthtext, 6);
revheightt = " ";
sprintf(revheighttext, "%7.7s", revheightt);
Move(rp, 21, 115);
Text(rp, revheighttext, 7);
revdeptht = " ";
sprintf(revdepthtext, "%7.7s", revdeptht);
Move(rp, 25, 126);
Text(rp, revdepthtext, 7);
revwallvaryt = " ";
sprintf(revwallvarytext, "%9.9s", revwallvaryt);
Move(rp, 5, 137);
Text(rp, revwallvarytext, 9);
revreturnt="RvReturn";
sprintf(revreturntext, "%9.9s", revreturnt);
Move(rp, 7, 159);
Text(rp, revreturntext, 9);
revpant="RvPan";
sprintf(revpantext, "%5.5s", revpant);
Move(rp, 39, 170);
Text(rp, revpantext, 5);
SetAPen(rp, 1);
}
else if (value == stage2)
{
revtimet = " ";
sprintf(revtimetext, "%5.5s", revtimet);
Move(rp, 39, 49);
Text(rp, revtimetext, 5);
revwidtht = " ";
sprintf(revwidthtext, "%6.6s", revwidtht);
Move(rp, 30, 104);
Text(rp, revwidthtext, 6);
revheightt = " ";
sprintf(revheighttext, "%7.7s", revheightt);
Move(rp, 21, 115);
Text(rp, revheighttext, 7);
revdeptht = " ";
sprintf(revdepthtext, "%7.7s", revdeptht);
Move(rp, 25, 126);
Text(rp, revdepthtext, 7);
revwallvaryt = " ";
sprintf(revwallvarytext, "%9.9s", revwallvaryt);
Move(rp, 5, 137);
Text(rp, revwallvarytext, 9);
revreturnt = " ";
sprintf(revreturntext, "%9.9s", revreturnt);
Move(rp, 7, 159);
Text(rp, revreturntext, 9);
revpant=" ";
sprintf(revpantext, "%6.6s", revpant);
Move(rp, 35, 170);
Text(rp, revpantext, 6);
SetAPen(rp, 1);
}
else if (value == plate)
{
revtimet = " ";
sprintf(revtimetext, "%5.5s", revtimet);
Move(rp, 39, 49);
Text(rp, revtimetext, 5);
revwidtht = " ";
sprintf(revwidthtext, "%6.6s", revwidtht);
Move(rp, 30, 104);
Text(rp, revwidthtext, 6);
revheightt = " ";
sprintf(revheighttext, "%7.7s", revheightt);
Move(rp, 21, 115);
Text(rp, revheighttext, 7);
revdeptht = " ";
sprintf(revdepthtext, "%7.7s", revdeptht);
Move(rp, 25, 126);
Text(rp, revdepthtext, 7);
revwallvaryt = " ";
sprintf(revwallvarytext, "%9.9s", revwallvaryt);
Move(rp, 5, 137);
Text(rp, revwallvarytext, 9);
revreturnt = " ";
sprintf(revreturntext, "%9.9s", revreturnt);
Move(rp, 7, 159);
Text(rp, revreturntext, 9);
revpant=" ";
sprintf(revpantext, "%6.6s", revpant);
Move(rp, 35, 170);
Text(rp, revpantext, 6);
SetAPen(rp, 1);
}
else if (value == whiteroom)
{
revtimet="Time";
sprintf(revtimetext, "%5.5s", revtimet);
Move(rp, 39, 49);
Text(rp, revtimetext, 5);
revwidtht = "Width";
sprintf(revwidthtext, "%6.6s", revwidtht);
Move(rp, 30, 104);
Text(rp, revwidthtext, 6);
revheightt="Height";
sprintf(revheighttext, "%7.7s", revheightt);
Move(rp, 23, 115);
Text(rp, revheighttext, 7);
revdeptht="Depth";
sprintf(revdepthtext, "%7.7s", revdeptht);
Move(rp, 22, 126);
Text(rp, revdepthtext, 7);
revwallvaryt="WallVary";
sprintf(revwallvarytext, "%9.9s", revwallvaryt);
Move(rp, 5, 137);
Text(rp, revwallvarytext, 9);
revreturnt="RvReturn";
sprintf(revreturntext, "%9.9s", revreturnt);
Move(rp, 7, 159);
Text(rp, revreturntext, 9);
revpant="RvPan";
sprintf(revpantext, "%5.5s", revpant);
Move(rp, 39, 170);
Text(rp, revpantext, 5);
SetAPen(rp, 1);
}
else if (value == tunnel)
{
revtimet="Time";
sprintf(revtimetext, "%5.5s", revtimet);
Move(rp, 39, 49);
Text(rp, revtimetext, 5);
revwidtht = "Width";
sprintf(revwidthtext, "%6.6s", revwidtht);
Move(rp, 30, 104);
Text(rp, revwidthtext, 6);
revheightt="Height";
sprintf(revheighttext, "%7.7s", revheightt);
Move(rp, 23, 115);
Text(rp, revheighttext, 7);
revdeptht="Depth";
sprintf(revdepthtext, "%7.7s", revdeptht);
Move(rp, 22, 126);
Text(rp, revdepthtext, 7);
revwallvaryt="WallVary";
sprintf(revwallvarytext, "%9.9s", revwallvaryt);
Move(rp, 5, 137);
Text(rp, revwallvarytext, 9);
revreturnt = " ";
sprintf(revreturntext, "%9.9s", revreturnt);
Move(rp, 7, 159);
Text(rp, revreturntext, 9);
revpant=" ";
sprintf(revpantext, "%6.6s", revpant);
Move(rp, 35, 170);
Text(rp, revpantext, 6);
SetAPen(rp, 1);
}
else if (value == basement)
{
revtimet="Time";
sprintf(revtimetext, "%5.5s", revtimet);
Move(rp, 39, 49);
Text(rp, revtimetext, 5);
revwidtht = "Width";
sprintf(revwidthtext, "%6.6s", revwidtht);
Move(rp, 30, 104);
Text(rp, revwidthtext, 6);
revheightt="Height";
sprintf(revheighttext, "%7.7s", revheightt);
Move(rp, 23, 115);
Text(rp, revheighttext, 7);
revdeptht="Depth";
sprintf(revdepthtext, "%7.7s", revdeptht);
Move(rp, 22, 126);
Text(rp, revdepthtext, 7);
revwallvaryt="WallVary";
sprintf(revwallvarytext, "%9.9s", revwallvaryt);
Move(rp, 5, 137);
Text(rp, revwallvarytext, 9);
revreturnt = " ";
sprintf(revreturntext, "%9.9s", revreturnt);
Move(rp, 7, 159);
Text(rp, revreturntext, 9);
revpant=" ";
sprintf(revpantext, "%6.6s", revpant);
Move(rp, 35, 170);
Text(rp, revpantext, 6);
SetAPen(rp, 1);
}
Move(rp, 240, 37);
break;
case RVTIME_GADGET:
Move(rp, 240, 48);
break;
case RVDIFFSN_GADGET:
Move(rp, 240, 59);
break;
case RVINITDELAY_GADGET:
Move(rp, 240, 70);
break;
case RVHPFCUTOFF_GADGET:
Move(rp, 240, 81);
break;
case RVLPFCUTOFF_GADGET:
value = value + 34;
Move(rp, 240, 92);
break;
case RVWIDTH_GADGET:
Move(rp, 240, 103);
break;
case RVHEIGHT_GADGET:
Move(rp, 240, 114);
break;
case RVDEPTH_GADGET:
Move(rp, 240, 125);
break;
case RVWALLVARY_GADGET:
Move(rp, 240, 136);
break;
case RVDRYWET_GADGET:
Move(rp, 240, 147);
break;
case RVRETURN_GADGET:
Move(rp, 240, 158);
break;
case RVPAN_GADGET:
Move(rp, 240, 169);
break;
case RVDELAY_GADGET:
Move(rp, 240, 180);
break;
case RVDENSITY_GADGET:
Move(rp, 240, 191);
break;
case RVERREVBAL_GADGET:
Move(rp, 240, 202);
break;
case RVFEEDBACK_GADGET:
Move(rp, 240, 213);
break;
default:
break;
}
SetAPen(rp, 1);
SetBPen(rp, 0);
SetDrMd(rp, JAM2);
sprintf(text, "%3ld", value);
Text(rp, text, 3);
return value;
}
//Drag & draw functions for the gadgets
static long drag_embossed_prop(struct Window *window, short id, UBYTE min)
{
long value = (*functions->DragEmbossedProp)(window, id);
if (value < min)
{
value = min;
(*functions->ModifyEmbossedProp)(window, id, value, 0, 0, 0, 0, 0);
}
(*functions->DrawEmbossedProp)(window, id);
return value;
}
static long shift_embossed_prop(struct Window *window, short id, short shift, UBYTE min)
{
long value = (*functions->ShiftEmbossedProp)(window, id, shift, 0);
if (value < min)
{
value = min;
(*functions->ModifyEmbossedProp)(window, id, value, 0, 0, 0, 0, 0);
}
(*functions->DrawEmbossedProp)(window, id);
return value;
}
//to hear the changes
static void send_note(struct RVXGTool *tool, const long time, const UBYTE note)
{
struct NoteEvent *on_event = (struct NoteEvent *)(*functions->allocevent)();
if (on_event)
{
struct NoteEvent *off_event = (struct NoteEvent *)(*functions->allocevent)();
if (off_event)
{
on_event->next =
off_event->next = NULL;
on_event->type =
off_event->type = EVENT_VOICE;
on_event->status = MIDI_NOTEON;
off_event->status = MIDI_NOTEOFF;
on_event->value =
off_event->value = note;
on_event->velocity = 80;
on_event->time = time;
off_event->time = time + 96;
on_event->tool =
off_event->tool = tool->tool.next;
(*functions->qevent)(on_event);
(*functions->qevent)(off_event);
}
else
{
(*functions->freeevent)(on_event);
}
}
}
static void send_pc_and_note(struct RVXGTool *tool, const long time, const UBYTE note)
{
//send_pc(tool, time);
send_note(tool, time + 3, note);
}
static void initvalues(struct Window *window, struct RVXGTool *tool, int init, UBYTE initswitch)
{
int i;
int initval[]={
0x12,0x0a,0x08,0x0d,0x0f,0x00,0x00,0x00,0x00,0x28,0x40,0x40,0x00,0x04,0x32,0x40, //Hall1
0x19,0x0a,0x1c,0x06,0x0c,0x00,0x00,0x00,0x00,0x28,0x00,0x00,0x0d,0x03,0x4a,0x40, //Hall2
0x05,0x0a,0x10,0x04,0x0f,0x00,0x00,0x00,0x00,0x28,0x00,0x00,0x05,0x03,0x40,0x40, //Room1
0x0c,0x0a,0x05,0x04,0x04,0x00,0x00,0x00,0x00,0x28,0x00,0x00,0x00,0x03,0x32,0x40, //Room2
0x09,0x0a,0x2f,0x05,0x02,0x00,0x00,0x00,0x00,0x28,0x00,0x00,0x00,0x04,0x3c,0x40, //Room3
0x00,0x0a,0x10,0x07,0x14,0x00,0x00,0x00,0x00,0x28,0x40,0x40,0x00,0x03,0x40,0x40, //Stage1
0x00,0x0a,0x10,0x07,0x11,0x00,0x00,0x00,0x00,0x28,0x00,0x00,0x02,0x02,0x40,0x40, //Stage2
0x00,0x0a,0x06,0x08,0x0f,0x00,0x00,0x00,0x00,0x28,0x00,0x00,0x02,0x03,0x40,0x40, //Plate
0x09,0x05,0x0b,0x01,0x0c,0x1e,0x32,0x46,0x07,0x28,0x40,0x40,0x22,0x03,0x40,0x40, //WhiteRoom
0x30,0x06,0x13,0x01,0x0a,0x21,0x34,0x46,0x10,0x28,0x00,0x00,0x14,0x03,0x40,0x40, //Tunnel
0x03,0x06,0x03,0x01,0x01,0x1a,0x1d,0x3b,0x0f,0x28,0x00,0x00,0x20,0x03,0x40,0x40 }; //Basement
if (initswitch == 1)
{
tool->revtime = (UBYTE)initval[0+(init*16)];
tool->revdiffusion = (UBYTE)initval[1+(init*16)];
tool->revinitdelay = (UBYTE)initval[2+(init*16)];
tool->revhpfcutoff = (UBYTE)initval[3+(init*16)];
tool->revlpfcutoff = (UBYTE)initval[4+(init*16)];
tool->revwidth = (UBYTE)initval[5+(init*16)];
tool->revheight = (UBYTE)initval[6+(init*16)];
tool->revdepth = (UBYTE)initval[7+(init*16)];
tool->revwallvary = (UBYTE)initval[8+(init*16)];
tool->revdrywet = (UBYTE)initval[9+(init*16)];
tool->revreturn = (UBYTE)initval[10+(init*16)];
tool->revpan = (UBYTE)initval[11+(init*16)];
tool->revdelay = (UBYTE)initval[12+(init*16)];
tool->revdensity = (UBYTE)initval[13+(init*16)];
tool->reverrevbal = (UBYTE)initval[14+(init*16)];
tool->revfeedback = (UBYTE)initval[15+(init*16)];
}
(*functions->ModifyEmbossedProp)(window, RVTIME_GADGET, tool->revtime, 0, 0, 0, 0, 0);
(*functions->ModifyEmbossedProp)(window, RVDIFFSN_GADGET, tool->revdiffusion, 0, 0, 0, 0, 0);
(*functions->ModifyEmbossedProp)(window, RVINITDELAY_GADGET, tool->revinitdelay, 0, 0, 0, 0, 0);
(*functions->ModifyEmbossedProp)(window, RVHPFCUTOFF_GADGET, tool->revhpfcutoff, 0, 0, 0, 0, 0);
(*functions->ModifyEmbossedProp)(window, RVLPFCUTOFF_GADGET, tool->revlpfcutoff, 0, 0, 0, 0, 0);
(*functions->ModifyEmbossedProp)(window, RVWIDTH_GADGET, tool->revwidth, 0, 0, 0, 0, 0);
(*functions->ModifyEmbossedProp)(window, RVHEIGHT_GADGET, tool->revheight, 0, 0, 0, 0, 0);
(*functions->ModifyEmbossedProp)(window, RVDEPTH_GADGET, tool->revdepth, 0, 0, 0, 0, 0);
(*functions->ModifyEmbossedProp)(window, RVWALLVARY_GADGET, tool->revwallvary, 0, 0, 0, 0, 0);
(*functions->ModifyEmbossedProp)(window, RVDRYWET_GADGET, tool->revdrywet, 0, 0, 0, 0, 0);
(*functions->ModifyEmbossedProp)(window, RVRETURN_GADGET, tool->revreturn, 0, 0, 0, 0, 0);
(*functions->ModifyEmbossedProp)(window, RVPAN_GADGET, tool->revpan, 0, 0, 0, 0, 0);
(*functions->ModifyEmbossedProp)(window, RVDELAY_GADGET, tool->revdelay, 0, 0, 0, 0, 0);
(*functions->ModifyEmbossedProp)(window, RVDENSITY_GADGET, tool->revdensity, 0, 0, 0, 0, 0);
(*functions->ModifyEmbossedProp)(window, RVERREVBAL_GADGET, tool->reverrevbal, 0, 0, 0, 0, 0);
(*functions->ModifyEmbossedProp)(window, RVFEEDBACK_GADGET, tool->revfeedback, 0, 0, 0, 0, 0);
for (i = RVTIME_GADGET; i <= RVFEEDBACK_GADGET; i += 3)
{
(*functions->DrawEmbossedProp)(window, i);
}
}
//the center off all
static void __saveds edittoolcode(struct RVXGTool *tool)
{
struct IntuiMessage *message;
struct Window *window;
LONG class, code, time;
struct Gadget *gadget;
struct NewWindow *newwindow;
int i, ini, revres=0;
char *sysexbuff=NULL, *revtypebt, *storagebt;
char revtypebyte[11][4] ={
"0100", "0101", "0202", "0201", "0202", "0300", "0301", "0400", "1000", "1100", "1300"};
RVXGNewWindowStructure1.Screen = functions->screen;
if (tool->tool.touched & TOUCH_EDIT)
{
RVXGNewWindowStructure1.LeftEdge = tool->tool.left;
RVXGNewWindowStructure1.TopEdge = tool->tool.top;
RVXGNewWindowStructure1.Width = tool->tool.width;
RVXGNewWindowStructure1.Height = tool->tool.height;
tool->revtypesysex = tool->storage1;
tool->revtimesysex = tool->storage2;
tool->revdiffusionsysex = tool->storage3;
tool->revinitdelaysysex = tool->storage4;
tool->revhpfcutoffsysex = tool->storage5;
tool->revlpfcutoffsysex = tool->storage6;
tool->revwidthsysex = tool->storage7;
tool->revheightsysex = tool->storage8;
tool->revdepthsysex = tool->storage9;
tool->revwallvarysysex = tool->storage10;
tool->revdrywetsysex = tool->storage11;
tool->revreturnsysex = tool->storage12;
tool->revpansysex = tool->storage13;
tool->revdelaysysex = tool->storage14;
tool->revdensitysysex = tool->storage15;
tool->reverrevbalsysex = tool->storage16;
tool->revfeedbacksysex = tool->storage17;
}
if (!tool->tool.touched)
{
RVXG_tool_init(tool);
}
newwindow = (struct NewWindow *) (*functions->DupeNewWindow)(&RVXGNewWindowStructure1);
if (!newwindow)
{
return;
}
newwindow->Title = 0;
newwindow->Flags |= BORDERLESS;
newwindow->Flags &= ~0xF;
newwindow->BlockPen = 0;
newwindow->DetailPen = 0;
window = (struct Window *) (*functions->FlashyOpenWindow)(newwindow);
if (!window) return;
tool->tool.window = window;
(*functions->EmbossWindowOn)(window, WINDOWCLOSE|WINDOWDEPTH|WINDOWDRAG, RVXG_NAME, (short)-1, (short)-1, 0, 0);
(*functions->FatEmbossedPropOn)(window, RVTYPE_GADGET, RVTYPEDOWN_GADGET,
RVTYPEUP_GADGET, (void *)display_routine, 11, 1);
(*functions->FatEmbossedPropOn)(window, RVTIME_GADGET, RVTIMEDOWN_GADGET,
RVTIMEUP_GADGET, (void *)display_routine, 70, 1);
(*functions->FatEmbossedPropOn)(window, RVDIFFSN_GADGET, RVDIFFSNDOWN_GADGET,
RVDIFFSNUP_GADGET, (void *)display_routine, 11, 1);
(*functions->FatEmbossedPropOn)(window, RVINITDELAY_GADGET, RVINITDELAYDOWN_GADGET,
RVINITDELAYUP_GADGET, (void *)display_routine, 64, 1);
(*functions->FatEmbossedPropOn)(window, RVHPFCUTOFF_GADGET, RVHPFCUTOFFDOWN_GADGET,
RVHPFCUTOFFUP_GADGET, (void *)display_routine, 53, 1);
(*functions->FatEmbossedPropOn)(window, RVLPFCUTOFF_GADGET, RVLPFCUTOFFDOWN_GADGET,
RVLPFCUTOFFUP_GADGET, (void *)display_routine, 27, 1);
(*functions->FatEmbossedPropOn)(window, RVWIDTH_GADGET, RVWIDTHDOWN_GADGET,
RVWIDTHUP_GADGET, (void *)display_routine, 38, 1);
(*functions->FatEmbossedPropOn)(window, RVHEIGHT_GADGET, RVHEIGHTDOWN_GADGET,
RVHEIGHTUP_GADGET, (void *)display_routine, 74, 1);
(*functions->FatEmbossedPropOn)(window, RVDEPTH_GADGET, RVDEPTHDOWN_GADGET,
RVDEPTHUP_GADGET, (void *)display_routine, 74, 1);
(*functions->FatEmbossedPropOn)(window, RVWALLVARY_GADGET, RVWALLVARYDOWN_GADGET,
RVWALLVARYUP_GADGET, (void *)display_routine, 31, 1);
(*functions->FatEmbossedPropOn)(window, RVDRYWET_GADGET, RVDRYWETDOWN_GADGET,
RVDRYWETUP_GADGET, (void *)display_routine, 128, 1);
(*functions->FatEmbossedPropOn)(window, RVRETURN_GADGET, RVRETURNDOWN_GADGET,
RVRETURNUP_GADGET, (void *)display_routine, 128, 1);
(*functions->FatEmbossedPropOn)(window, RVPAN_GADGET, RVPANDOWN_GADGET,
RVPANUP_GADGET, (void *)display_routine, 128, 1);
(*functions->FatEmbossedPropOn)(window, RVDELAY_GADGET, RVDELAYDOWN_GADGET,
RVDELAYUP_GADGET, (void *)display_routine, 64, 1);
(*functions->FatEmbossedPropOn)(window, RVDENSITY_GADGET, RVDENSITYDOWN_GADGET,
RVDENSITYUP_GADGET, (void *)display_routine, 5, 1);
(*functions->FatEmbossedPropOn)(window, RVERREVBAL_GADGET, RVERREVBALDOWN_GADGET,
RVERREVBALUP_GADGET, (void *)display_routine, 128, 1);
(*functions->FatEmbossedPropOn)(window, RVFEEDBACK_GADGET, RVFEEDBACKDOWN_GADGET,
RVFEEDBACKUP_GADGET, (void *)display_routine, 128, 1);
(*functions->EmbossOn)(window, WRITE_GADGET, 1);
(*functions->ModifyEmbossedProp)(window, RVTYPE_GADGET, tool->revtype, 0, 0, 0, 0, 0);
(*functions->DrawEmbossedProp)(window, RVTYPE_GADGET);
ini = (int)tool->revtype;
initvalues(window, tool, ini, 0);
send_note(tool, functions->timenow, 60);
for (;;)
{
message = (struct IntuiMessage *) (*functions->GetIntuiMessage)(window);
class = message->Class;
code = message->Code;
gadget = (struct Gadget *) message->IAddress;
class = (*functions->SystemGadgets)(window, class, gadget, code);
ReplyMsg((struct Message *)message);
if (class == CLOSEWINDOW)
{
break;
}
else if (class == GADGETDOWN)
{
const short id = gadget->GadgetID;
switch (id)
{
case RVTYPE_GADGET:
tool->revtype = (UBYTE) drag_embossed_prop(window, RVTYPE_GADGET, 0);
revtypebt = revtypebyte[tool->revtype];
sprintf(tool->storage1, "F043104C020100%.4sF7",revtypebt);
tool->revtypesysex = tool->storage1;
time = functions->timenow;
trans_hx(tool, time, tool->revtypesysex, 0);
ini = (int)tool->revtype;
initvalues(window, tool, ini, 1);
break;
case RVTYPEDOWN_GADGET:
tool->revtype = (UBYTE) shift_embossed_prop(window, RVTYPE_GADGET, -1, 0);
revtypebt = revtypebyte[tool->revtype];
sprintf(tool->storage1, "F043104C020100%.4sF7",revtypebt);
tool->revtypesysex = tool->storage1;
time = functions->timenow;
trans_hx(tool, time, tool->revtypesysex, 0);
ini = (int)tool->revtype;
initvalues(window, tool, ini, 1);
break;
case RVTYPEUP_GADGET:
tool->revtype = (UBYTE) shift_embossed_prop(window, RVTYPE_GADGET, 1, 0);
revtypebt = revtypebyte[tool->revtype];
sprintf(tool->storage1, "F043104C020100%.4sF7",revtypebt);
tool->revtypesysex = tool->storage1;
time = functions->timenow;
trans_hx(tool, time, tool->revtypesysex, 0);
ini = (int)tool->revtype;
initvalues(window, tool, ini, 1);
break;
case RVTIME_GADGET:
tool->revtime = (UBYTE) drag_embossed_prop(window, RVTIME_GADGET, 0);
sprintf(tool->storage2, "F043104C020102%02lxF7",tool->revtime);
tool->revtimesysex = tool->storage2;
time = functions->timenow;
trans_hx(tool, time, tool->revtimesysex, 0);
break;
case RVTIMEDOWN_GADGET:
tool->revtime = (UBYTE) shift_embossed_prop(window, RVTIME_GADGET, -1, 0);
sprintf(tool->storage2, "F043104C020102%02lxF7",tool->revtime);
tool->revtimesysex = tool->storage2;
time = functions->timenow;
trans_hx(tool, time, tool->revtimesysex, 0);
break;
case RVTIMEUP_GADGET:
tool->revtime = (UBYTE) shift_embossed_prop(window, RVTIME_GADGET, 1, 0);
sprintf(tool->storage2, "F043104C020102%02lxF7",tool->revtime);
tool->revtimesysex = tool->storage2;
time = functions->timenow;
trans_hx(tool, time, tool->revtimesysex, 0);
break;
case RVDIFFSN_GADGET:
tool->revdiffusion = (UBYTE) drag_embossed_prop(window, RVDIFFSN_GADGET, 0);
sprintf(tool->storage3, "F043104C020103%02lxF7",tool->revdiffusion);
tool->revdiffusionsysex = tool->storage3;
time = functions->timenow;
trans_hx(tool, time, tool->revdiffusionsysex, 0);
break;
case RVDIFFSNDOWN_GADGET:
tool->revdiffusion = (UBYTE) shift_embossed_prop(window, RVDIFFSN_GADGET, -1, 0);
sprintf(tool->storage3, "F043104C020103%02lxF7",tool->revdiffusion);
tool->revdiffusionsysex = tool->storage3;
time = functions->timenow;
trans_hx(tool, time, tool->revdiffusionsysex, 0);
break;
case RVDIFFSNUP_GADGET:
tool->revdiffusion = (UBYTE) shift_embossed_prop(window, RVDIFFSN_GADGET, 1, 0);
sprintf(tool->storage3, "F043104C020103%02lxF7",tool->revdiffusion);
tool->revdiffusionsysex = tool->storage3;
time = functions->timenow;
trans_hx(tool, time, tool->revdiffusionsysex, 0);
break;
case RVINITDELAY_GADGET:
tool->revinitdelay = (UBYTE) drag_embossed_prop(window, RVINITDELAY_GADGET, 0);
sprintf(tool->storage4, "F043104C020104%02lxF7",tool->revinitdelay);
tool->revinitdelaysysex = tool->storage4;
time = functions->timenow;
trans_hx(tool, time, tool->revinitdelaysysex, 0);
break;
case RVINITDELAYDOWN_GADGET:
tool->revinitdelay = (UBYTE) shift_embossed_prop(window, RVINITDELAY_GADGET, -1, 0);
sprintf(tool->storage4, "F043104C020104%02lxF7",tool->revinitdelay);
tool->revinitdelaysysex = tool->storage4;
time = functions->timenow;
trans_hx(tool, time, tool->revinitdelaysysex, 0);
break;
case RVINITDELAYUP_GADGET:
tool->revinitdelay = (UBYTE) shift_embossed_prop(window, RVINITDELAY_GADGET, 1, 0);
sprintf(tool->storage4, "F043104C020104%02lxF7",tool->revinitdelay);
tool->revinitdelaysysex = tool->storage4;
time = functions->timenow;
trans_hx(tool, time, tool->revinitdelaysysex, 0);
break;
case RVHPFCUTOFF_GADGET:
tool->revhpfcutoff = (UBYTE) drag_embossed_prop(window, RVHPFCUTOFF_GADGET, 0);
sprintf(tool->storage5, "F043104C020105%02lxF7",tool->revhpfcutoff);
tool->revhpfcutoffsysex = tool->storage5;
time = functions->timenow;
trans_hx(tool, time, tool->revhpfcutoffsysex, 0);
break;
case RVHPFCUTOFFDOWN_GADGET:
tool->revhpfcutoff = (UBYTE) shift_embossed_prop(window, RVHPFCUTOFF_GADGET, -1, 0);
sprintf(tool->storage5, "F043104C020105%02lxF7",tool->revhpfcutoff);
tool->revhpfcutoffsysex = tool->storage5;
time = functions->timenow;
trans_hx(tool, time, tool->revhpfcutoffsysex, 0);
break;
case RVHPFCUTOFFUP_GADGET:
tool->revhpfcutoff = (UBYTE) shift_embossed_prop(window, RVHPFCUTOFF_GADGET, 1, 0);
sprintf(tool->storage5, "F043104C020105%02lxF7",tool->revhpfcutoff);
tool->revhpfcutoffsysex = tool->storage5;
time = functions->timenow;
trans_hx(tool, time, tool->revhpfcutoffsysex, 0);
break;
case RVLPFCUTOFF_GADGET:
tool->revlpfcutoff = (UBYTE) drag_embossed_prop(window, RVLPFCUTOFF_GADGET, 0);
sprintf(tool->storage6, "F043104C020106%02lxF7",tool->revlpfcutoff);
tool->revlpfcutoffsysex = tool->storage6;
time = functions->timenow;
trans_hx(tool, time, tool->revlpfcutoffsysex, 0);
break;
case RVLPFCUTOFFDOWN_GADGET:
tool->revlpfcutoff = (UBYTE) shift_embossed_prop(window, RVLPFCUTOFF_GADGET, -1, 0);
sprintf(tool->storage6, "F043104C020106%02lxF7",tool->revlpfcutoff);
tool->revlpfcutoffsysex = tool->storage6;
time = functions->timenow;
trans_hx(tool, time, tool->revlpfcutoffsysex, 0);
break;
case RVLPFCUTOFFUP_GADGET:
tool->revlpfcutoff = (UBYTE) shift_embossed_prop(window, RVLPFCUTOFF_GADGET, 1, 0);
sprintf(tool->storage6, "F043104C020106%02lxF7",tool->revlpfcutoff);
tool->revlpfcutoffsysex = tool->storage6;
time = functions->timenow;
trans_hx(tool, time, tool->revlpfcutoffsysex, 0);
break;
case RVWIDTH_GADGET:
tool->revwidth = (UBYTE) drag_embossed_prop(window, RVWIDTH_GADGET, 0);
sprintf(tool->storage7, "F043104C020107%02lxF7",tool->revwidth);
tool->revwidthsysex = tool->storage7;
time = functions->timenow;
trans_hx(tool, time, tool->revwidthsysex, 0);
break;
case RVWIDTHDOWN_GADGET:
tool->revwidth = (UBYTE) shift_embossed_prop(window, RVWIDTH_GADGET, -1, 0);
sprintf(tool->storage7, "F043104C020107%02lxF7",tool->revwidth);
tool->revwidthsysex = tool->storage7;
time = functions->timenow;
trans_hx(tool, time, tool->revwidthsysex, 0);
break;
case RVWIDTHUP_GADGET:
tool->revwidth = (UBYTE) shift_embossed_prop(window, RVWIDTH_GADGET, 1, 0);
sprintf(tool->storage7, "F043104C020107%02lxF7",tool->revwidth);
tool->revwidthsysex = tool->storage7;
time = functions->timenow;
trans_hx(tool, time, tool->revwidthsysex, 0);
break;
case RVHEIGHT_GADGET:
tool->revheight = (UBYTE) drag_embossed_prop(window, RVHEIGHT_GADGET, 0);
sprintf(tool->storage8, "F043104C020108%02lxF7",tool->revheight);
tool->revheightsysex = tool->storage8;
time = functions->timenow;
trans_hx(tool, time, tool->revheightsysex, 0);
break;
case RVHEIGHTDOWN_GADGET:
tool->revheight = (UBYTE) shift_embossed_prop(window, RVHEIGHT_GADGET, -1, 0);
sprintf(tool->storage8, "F043104C020108%02lxF7",tool->revheight);
tool->revheightsysex = tool->storage8;
time = functions->timenow;
trans_hx(tool, time, tool->revheightsysex, 0);
break;
case RVHEIGHTUP_GADGET:
tool->revheight = (UBYTE) shift_embossed_prop(window, RVHEIGHT_GADGET, 1, 0);
sprintf(tool->storage8, "F043104C020108%02lxF7",tool->revheight);
tool->revheightsysex = tool->storage8;
time = functions->timenow;
trans_hx(tool, time, tool->revheightsysex, 0);
break;
case RVDEPTH_GADGET:
tool->revdepth = (UBYTE) drag_embossed_prop(window, RVDEPTH_GADGET, 0);
sprintf(tool->storage9, "F043104C020109%02lxF7",tool->revdepth);
tool->revdepthsysex = tool->storage9;
time = functions->timenow;
trans_hx(tool, time, tool->revdepthsysex, 0);
break;
case RVDEPTHDOWN_GADGET:
tool->revdepth = (UBYTE) shift_embossed_prop(window, RVDEPTH_GADGET, -1, 0);
sprintf(tool->storage9, "F043104C020109%02lxF7",tool->revdepth);
tool->revdepthsysex = tool->storage9;
time = functions->timenow;
trans_hx(tool, time, tool->revdepthsysex, 0);
break;
case RVDEPTHUP_GADGET:
tool->revdepth = (UBYTE) shift_embossed_prop(window, RVDEPTH_GADGET, 1, 0);
sprintf(tool->storage9, "F043104C020109%02lxF7",tool->revdepth);
tool->revdepthsysex = tool->storage9;
time = functions->timenow;
trans_hx(tool, time, tool->revdepthsysex, 0);
break;
case RVWALLVARY_GADGET:
tool->revwallvary = (UBYTE) drag_embossed_prop(window, RVWALLVARY_GADGET, 0);
sprintf(tool->storage10, "F043104C02010A%02lxF7",tool->revwallvary);
tool->revwallvarysysex = tool->storage10;
time = functions->timenow;
trans_hx(tool, time, tool->revwallvarysysex, 0);
break;
case RVWALLVARYDOWN_GADGET:
tool->revwallvary = (UBYTE) shift_embossed_prop(window, RVWALLVARY_GADGET, -1, 0);
sprintf(tool->storage10, "F043104C02010A%02lxF7",tool->revwallvary);
tool->revwallvarysysex = tool->storage10;
time = functions->timenow;
trans_hx(tool, time, tool->revwallvarysysex, 0);
break;
case RVWALLVARYUP_GADGET:
tool->revwallvary = (UBYTE) shift_embossed_prop(window, RVWALLVARY_GADGET, 1, 0);
sprintf(tool->storage10, "F043104C02010A%02lxF7",tool->revwallvary);
tool->revwallvarysysex = tool->storage10;
time = functions->timenow;
trans_hx(tool, time, tool->revwallvarysysex, 0);
break;
case RVDRYWET_GADGET:
tool->revdrywet = (UBYTE) drag_embossed_prop(window, RVDRYWET_GADGET, 0);
sprintf(tool->storage11, "F043104C02010B%02lxF7",tool->revdrywet);
tool->revdrywetsysex = tool->storage11;
time = functions->timenow;
trans_hx(tool, time, tool->revdrywetsysex, 0);
break;
case RVDRYWETDOWN_GADGET:
tool->revdrywet = (UBYTE) shift_embossed_prop(window, RVDRYWET_GADGET, -1, 0);
sprintf(tool->storage11, "F043104C02010B%02lxF7",tool->revdrywet);
tool->revdrywetsysex = tool->storage11;
time = functions->timenow;
trans_hx(tool, time, tool->revdrywetsysex, 0);
break;
case RVDRYWETUP_GADGET:
tool->revdrywet = (UBYTE) shift_embossed_prop(window, RVDRYWET_GADGET, 1, 0);
sprintf(tool->storage11, "F043104C02010B%02lxF7",tool->revdrywet);
tool->revdrywetsysex = tool->storage11;
time = functions->timenow;
trans_hx(tool, time, tool->revdrywetsysex, 0);
break;
case RVRETURN_GADGET:
tool->revreturn = (UBYTE) drag_embossed_prop(window, RVRETURN_GADGET, 0);
sprintf(tool->storage12, "F043104C02010C%02lxF7",tool->revreturn);
tool->revreturnsysex = tool->storage12;
time = functions->timenow;
trans_hx(tool, time, tool->revreturnsysex, 0);
break;
case RVRETURNDOWN_GADGET:
tool->revreturn = (UBYTE) shift_embossed_prop(window, RVRETURN_GADGET, -1, 0);
sprintf(tool->storage12, "F043104C02010C%02lxF7",tool->revreturn);
tool->revreturnsysex = tool->storage12;
time = functions->timenow;
trans_hx(tool, time, tool->revreturnsysex, 0);
break;
case RVRETURNUP_GADGET:
tool->revreturn = (UBYTE) shift_embossed_prop(window, RVRETURN_GADGET, 1, 0);
sprintf(tool->storage12, "F043104C02010C%02lxF7",tool->revreturn);
tool->revreturnsysex = tool->storage12;
time = functions->timenow;
trans_hx(tool, time, tool->revreturnsysex, 0);
break;
case RVPAN_GADGET:
tool->revpan = (UBYTE) drag_embossed_prop(window, RVPAN_GADGET, 0);
sprintf(tool->storage13, "F043104C02010D%02lxF7",tool->revpan);
tool->revpansysex = tool->storage13;
time = functions->timenow;
trans_hx(tool, time, tool->revpansysex, 0);
break;
case RVPANDOWN_GADGET:
tool->revpan = (UBYTE) shift_embossed_prop(window, RVPAN_GADGET, -1, 0);
sprintf(tool->storage13, "F043104C02010D%02lxF7",tool->revpan);
tool->revpansysex = tool->storage13;
time = functions->timenow;
trans_hx(tool, time, tool->revpansysex, 0);
break;
case RVPANUP_GADGET:
tool->revpan = (UBYTE) shift_embossed_prop(window, RVPAN_GADGET, 1, 0);
sprintf(tool->storage13, "F043104C02010D%02lxF7",tool->revpan);
tool->revpansysex = tool->storage13;
time = functions->timenow;
trans_hx(tool, time, tool->revpansysex, 0);
break;
case RVDELAY_GADGET:
tool->revdelay = (UBYTE) drag_embossed_prop(window, RVDELAY_GADGET, 0);
sprintf(tool->storage14, "F043104C020110%02lxF7",tool->revdelay);
tool->revdelaysysex = tool->storage14;
time = functions->timenow;
trans_hx(tool, time, tool->revdelaysysex, 0);
break;
case RVDELAYDOWN_GADGET:
tool->revdelay = (UBYTE) shift_embossed_prop(window, RVDELAY_GADGET, -1, 0);
sprintf(tool->storage14, "F043104C020110%02lxF7",tool->revdelay);
tool->revdelaysysex = tool->storage14;
time = functions->timenow;
trans_hx(tool, time, tool->revdelaysysex, 0);
break;
case RVDELAYUP_GADGET:
tool->revdelay = (UBYTE) shift_embossed_prop(window, RVDELAY_GADGET, 1, 0);
sprintf(tool->storage14, "F043104C020110%02lxF7",tool->revdelay);
tool->revdelaysysex = tool->storage14;
time = functions->timenow;
trans_hx(tool, time, tool->revdelaysysex, 0);
break;
case RVDENSITY_GADGET:
tool->revdensity = (UBYTE) drag_embossed_prop(window, RVDENSITY_GADGET, 0);
sprintf(tool->storage15, "F043104C020111%02lxF7",tool->revdensity);
tool->revdensitysysex = tool->storage15;
time = functions->timenow;
trans_hx(tool, time, tool->revdensitysysex, 0);
break;
case RVDENSITYDOWN_GADGET:
tool->revdelay = (UBYTE) shift_embossed_prop(window, RVDENSITY_GADGET, -1, 0);
sprintf(tool->storage15, "F043104C020111%02lxF7",tool->revdensity);
tool->revdensitysysex = tool->storage15;
time = functions->timenow;
trans_hx(tool, time, tool->revdensitysysex, 0);
break;
case RVDENSITYUP_GADGET:
tool->revdelay = (UBYTE) shift_embossed_prop(window, RVDENSITY_GADGET, 1, 0);
sprintf(tool->storage15, "F043104C020111%02lxF7",tool->revdensity);
tool->revdensitysysex = tool->storage15;
time = functions->timenow;
trans_hx(tool, time, tool->revdensitysysex, 0);
break;
case RVERREVBAL_GADGET:
tool->reverrevbal = (UBYTE) drag_embossed_prop(window, RVERREVBAL_GADGET, 0);
sprintf(tool->storage16, "F043104C020112%02lxF7",tool->reverrevbal);
tool->reverrevbalsysex = tool->storage16;
time = functions->timenow;
trans_hx(tool, time, tool->reverrevbalsysex, 0);
break;
case RVERREVBALDOWN_GADGET:
tool->reverrevbal = (UBYTE) shift_embossed_prop(window, RVERREVBAL_GADGET, -1, 0);
sprintf(tool->storage16, "F043104C020112%02lxF7",tool->reverrevbal);
tool->reverrevbalsysex = tool->storage16;
time = functions->timenow;
trans_hx(tool, time, tool->reverrevbalsysex, 0);
break;
case RVERREVBALUP_GADGET:
tool->reverrevbal = (UBYTE) shift_embossed_prop(window, RVERREVBAL_GADGET, 1, 0);
sprintf(tool->storage16, "F043104C020112%02lxF7",tool->reverrevbal);
tool->reverrevbalsysex = tool->storage16;
time = functions->timenow;
trans_hx(tool, time, tool->reverrevbalsysex, 0);
break;
case RVFEEDBACK_GADGET:
tool->revfeedback = (UBYTE) drag_embossed_prop(window, RVFEEDBACK_GADGET, 0);
sprintf(tool->storage17, "F043104C020114%02lxF7",tool->revfeedback);
tool->revfeedbacksysex = tool->storage17;
time = functions->timenow;
trans_hx(tool, time, tool->revfeedbacksysex, 0);
break;
case RVFEEDBACKDOWN_GADGET:
tool->revfeedback = (UBYTE) shift_embossed_prop(window, RVFEEDBACK_GADGET, -1, 0);
sprintf(tool->storage17, "F043104C020114%02lxF7",tool->revfeedback);
tool->revfeedbacksysex = tool->storage17;
time = functions->timenow;
trans_hx(tool, time, tool->revfeedbacksysex, 0);
break;
case RVFEEDBACKUP_GADGET:
tool->revfeedback = (UBYTE) shift_embossed_prop(window, RVFEEDBACK_GADGET, 1, 0);
sprintf(tool->storage17, "F043104C020114%02lxF7",tool->revfeedback);
tool->revfeedbacksysex = tool->storage17;
time = functions->timenow;
trans_hx(tool, time, tool->revfeedbacksysex, 0);
break;
case WRITE_GADGET:
if ((*functions->areyousure)("write to track ? Play-pointer on right place?"))
{
if (!functions->running)
{
time = functions->starttime;
if (tool->revtypesysex != NULL)trans_hx(tool, time, tool->revtypesysex , 1);
if (tool->revtimesysex != NULL)trans_hx(tool, time+1, tool->revtimesysex , 1);
if (tool->revdiffusionsysex != NULL)trans_hx(tool, time+2, tool->revdiffusionsysex , 1);
if (tool->revinitdelaysysex != NULL)trans_hx(tool, time+3, tool->revinitdelaysysex , 1);
if (tool->revhpfcutoffsysex != NULL)trans_hx(tool, time+4, tool->revhpfcutoffsysex , 1);
if (tool->revlpfcutoffsysex != NULL)trans_hx(tool, time+5, tool->revlpfcutoffsysex , 1);
if (tool->revwidthsysex != NULL)trans_hx(tool, time+6, tool->revwidthsysex , 1);
if (tool->revheightsysex != NULL)trans_hx(tool, time+7, tool->revheightsysex , 1);
if (tool->revdepthsysex != NULL)trans_hx(tool, time+9, tool->revdepthsysex , 1);
if (tool->revwallvarysysex != NULL)trans_hx(tool, time+10, tool->revwallvarysysex , 1);
if (tool->revdrywetsysex != NULL)trans_hx(tool, time+11, tool->revdrywetsysex , 1);
if (tool->revreturnsysex != NULL)trans_hx(tool, time+12, tool->revreturnsysex , 1);
if (tool->revpansysex != NULL)trans_hx(tool, time+13, tool->revpansysex , 1);
if (tool->revdelaysysex != NULL)trans_hx(tool, time+14, tool->revdelaysysex , 1);
if (tool->revdensitysysex != NULL)trans_hx(tool, time+15, tool->revdensitysysex , 1);
if (tool->reverrevbalsysex != NULL)trans_hx(tool, time+16, tool->reverrevbalsysex , 1);
if (tool->revfeedbacksysex != NULL)trans_hx(tool, time+17, tool->revfeedbacksysex , 1);
}
}
else {
// nothing
}
break;
}
send_note(tool, functions->timenow+30, 60);
}
else if (class == GADGETUP)
{
// Nothing.
}
}
tool->tool.window = 0;
tool->tool.left = window->LeftEdge;
tool->tool.top = window->TopEdge;
tool->tool.width = window->Width;
tool->tool.height = window->Height;
tool->tool.touched = TOUCH_INIT | TOUCH_EDIT;
for (i=RVTYPE_GADGET; i<=RVFEEDBACK_GADGET; i += 3)
{
(*functions->FatEmbossedPropOff)(window, i, i + 1, i + 2);
}
(*functions->EmbossOff)(window, WRITE_GADGET);
(*functions->EmbossWindowOff)(window);
(*functions->FlashyCloseWindow)(window);
(*functions->DeleteNewWindow)(newwindow);
}
//to leave the tool correct
void __saveds removetool()
{
FreeVec(RVXG);
}
//start of the tool
struct ToolMaster * inittoolmaster()
{
if (!(RVXG=(UWORD *)AllocVec(sizeof (RVXGdata), MEMF_CHIP|MEMF_CLEAR))) return(NULL);
CopyMem(&RVXGdata, RVXG, sizeof (RVXGdata));
memset((char *)&master, 0, sizeof(struct ToolMaster));
RVXG_image.ImageData = RVXG;
master.toolid = RVXG_ID;
master.image = &RVXG_image;
strcpy(master.name, RVXG_NAME);
master.edittool = edittoolcode;
master.processevent = processeventcode;
master.tooltype = RVXG_TYPE;
master.toolsize = sizeof(struct RVXGTool);
master.removetool = removetool;
return(&master);
}